O objetivo desse lab é o de auto-aprendizagem em uma ferramenta de deep learning. Em particular vamos aprender a implementar e interpretar uma rede do tipo multilayer perceptron (MLP) em R e Keras, um framework de deep learning.

Para isso você deve:

Ler o tutorial: https://www.datacamp.com/community/tutorials/keras-r-deep-learning (Links para um site externo)Links para um site externo Implementar os passos descritos no tutorial e organizá-los em um RMD com seus próprios comentários em português. A tarefa é basicamente reescrever o tutorial com suas próprias palavras, em português, e eventualmente de forma mais sucinta já o que o tutorial original é bastante extenso. Você pode adicionar explicações, código e dados que não estão no tutorial original, na verdade você é encorajado a fazer isso. Os critérios para correção serão: Facilidade em seguir o seu tutorial Se o código executa corretamente Bônus: Testar MLP na predição de votação do lab anterior e reportar o resultado.

A entrega deve ser o envio do .Rmd e publicação no Rpubs. Quando for publicar no Rpubs não esquecer de fazer referência ao tutorial original.

Keras é um pacote que oferece funções para o estudo sobre modelos abordando deep learning no R.

Esse tutorial terá como foco o MLP (Multi-Layer Perceptron), um tipo de Rede Neural Artificial que possui pelo menos três camadas internas compostas por nós (neurônios).

Instalando o pacote

Primeiro, importaremos o pacote devtools para poder instalar os pacotes que serão necessários:

library(devtools)

Em seguida, são importados o keras e tensorflow, para isso é necessário tê-los instalados:

# install_github("rstudio/tensorflow")
# install_github("rstudio/keras")

library(keras)
library(tensorflow)

# install_keras()

Carregando os dados

Os dados podem ser carregados de 3 maneiras diferentes:

Utilizando os datasets do keras:

mnist <- dataset_mnist()

cifar10 <- dataset_cifar10()

imdb <- dataset_imdb()

Criando nosso próprio dataset com dados aleatórios a partir da função matrix:

dados <- matrix(rexp(1000*784), nrow = 1000, ncol = 784)

labels <- matrix(round(runif(1000 * 10, min = 0, max = 9)),
                 nrow = 1000, ncol = 10)

Importando de um arquivo CSV (ou outro formato):

iris <- read.csv(url("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"), header = FALSE)

# Cabeçalho do dataset
head(iris)
##    V1  V2  V3  V4          V5
## 1 5.1 3.5 1.4 0.2 Iris-setosa
## 2 4.9 3.0 1.4 0.2 Iris-setosa
## 3 4.7 3.2 1.3 0.2 Iris-setosa
## 4 4.6 3.1 1.5 0.2 Iris-setosa
## 5 5.0 3.6 1.4 0.2 Iris-setosa
## 6 5.4 3.9 1.7 0.4 Iris-setosa
# Estrutura
str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ V1: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ V2: num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ V3: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ V4: num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ V5: Factor w/ 3 levels "Iris-setosa",..: 1 1 1 1 1 1 1 1 1 1 ...
# Dimensões
dim(iris)
## [1] 150   5

Utilizaremos esse dataset que contém dados sobre as dimensões de flores de íris e suas respectivas classificações. Mais detalhes em: http://archive.ics.uci.edu/ml/datasets/Iris

Exploração dos dados

É importante saber que todas as flores possuem sépalas e pétalas. A sépala possui tipicamente um tom verde, enquanto as pétalas são coloridas. Isso é diferente nas íris, como pode ser visto nas imagens: